// 设计一个泛型接口 Repository<T> ，它包含添加、获取、更新和删除项目的方法。然后创建一个实现这
// 个接口的类 GenericRepository<T>
// 定义具有 id 属性的接口
interface Identifiable {
    id: number;
}

// 泛型接口 Repository<T>
interface Repository<T extends Identifiable> {
    add(item: T): void;
    get(id: number): T | undefined;
    update(id: number, item: T): void;
    delete(id: number): void;  // 修改参数签名
}

// 实现 GenericRepository<T>
class GenericRepository<T extends Identifiable> implements Repository<T> {
    private items: T[] = [];

    add(item: T): void {
        this.items.push(item);
    }

    get(id: number): T | undefined {
        return this.items.find(item => item.id === id);
    }

    update(id: number, item: T): void {
        const index = this.items.findIndex(item => item.id === id);
        if (index !== -1) {
            this.items[index] = item;
        }
    }

    delete(id: number): void {
        const index = this.items.findIndex(item => item.id === id);
        if (index !== -1) {
            this.items.splice(index, 1);
        }
    }
}
